package com.hhd.day03


fun main(args: Array<String>) {

    val apple = Apple()
    val thing = Thing()
//    val fruitBox = FruitBox(thing)
    val fruitBox = FruitBox(apple)
}

/**
 * 箱子（物品类型不确定，定义泛型和使用泛型）
 */
open class Box<T>(var thing: T)

/**
 * 水果箱子
 *
 * <T:Fruit>限制上限，泛型只能是Fruit或Fruit的子类
 */
class FruitBox<T:Fruit>(thing: T) : Box<T>(thing)

/**
 * 物品类
 */
open class Thing
/**
 * 水果
 */
abstract class Fruit

/**
 * 苹果
 */
class Apple : Fruit()

/**
 * 橘子
 */
class Orange : Fruit()

